﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Reporting.WebForms;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using trangbaocao.Models;
using System.ComponentModel;
using System.Drawing.Printing;
using System.Drawing.Imaging;
using System.Drawing;
using System.IO;
using System.Text;

namespace trangbaocao.Models
{
    /// <summary>
    /// The ReportPrintDocument will print all of the pages of a ServerReport or LocalReport.
    /// The pages are rendered when the print document is constructed.  Once constructed,
    /// call Print() on this class to begin printing.
    /// </summary>
//    class ReportPrintDocument 
//    {
//        public int m_currentPageIndex;
//        public IList<Stream> m_streams;
//        public Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
//        {
//            Stream stream = new MemoryStream();
//            m_streams.Add(stream);
//            return stream;
//        }
//        public void Export(LocalReport report)
//        {
//            string deviceInfo =
//              @"<DeviceInfo>
//                <OutputFormat>EMF</OutputFormat>
//                <PageWidth>8.5in</PageWidth>
//                <PageHeight>11in</PageHeight>
//                <MarginTop>0.25in</MarginTop>
//                <MarginLeft>0.25in</MarginLeft>
//                <MarginRight>0.25in</MarginRight>
//                <MarginBottom>0.25in</MarginBottom>
//            </DeviceInfo>";
//            Warning[] warnings;
//            m_streams = new List<Stream>();
//            report.Render("Image", deviceInfo, CreateStream,
//               out warnings);
//            foreach (Stream stream in m_streams)
//                stream.Position = 0;
//        }
//        public void PrintPage(object sender, PrintPageEventArgs ev)
//        {
//            Metafile pageImage = new
//               Metafile(m_streams[m_currentPageIndex]);

//            // Adjust rectangular area with printer margins.
//            Rectangle adjustedRect = new Rectangle(
//                ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
//                ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
//                ev.PageBounds.Width,
//                ev.PageBounds.Height);

//            // Draw a white background for the report
//            ev.Graphics.FillRectangle(Brushes.White, adjustedRect);

//            // Draw the report content
//            ev.Graphics.DrawImage(pageImage, adjustedRect);

//            // Prepare for the next page. Make sure we haven't hit the end.
//            m_currentPageIndex++;
//            ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
//        }

//        public void Print()
//        {
//            if (m_streams == null || m_streams.Count == 0)
//                throw new Exception("Error: no stream to print.");
//            PrintDocument printDoc = new PrintDocument();
//            if (!printDoc.PrinterSettings.IsValid)
//            {
//                throw new Exception("Error: cannot find the default printer.");
//            }
//            else
//            {
//                printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
//                m_currentPageIndex = 0;
//                printDoc.Print();
//            }
//        }
//        // Create a local report for Report.rdlc, load the data,
//        //    export the report to an .emf file, and print it.
//    }
}
